package cn.sdhuijin.service;

import java.util.List;

import org.springframework.data.domain.Page;

import cn.sdhuijin.model.User;

/**
 * 
 * @author houyc
 *
 */
public interface UserService {

	/**
	 * 新增人员
	 * 
	 * @param user
	 *            新增人员信息
	 * @return
	 */
	public boolean addUser(User user);

	/**
	 * 查询人员信息
	 * 
	 * @return 人员信息列表
	 */
	public List<User> AllUsers();

	/**
	 * 导出用户
	 * 
	 * @param name
	 * @param userType
	 * @param branchId
	 * @return
	 */
	public List<User> ExportList(String name, String userType, String branchId);

	/**
	 * 删除选中人员信息
	 * 
	 * @param selectId
	 *            选中删除人员ID
	 * @param type
	 *            删除单个(single) 删除多个(multi)
	 * @return
	 */
	public boolean deleteUser(String selectId, String type);

	/**
	 * 通过指定ID获取人员信息
	 * 
	 * @param selectId
	 *            人员ID
	 * @return 人员信息
	 */
	public User searchOne(String selectId);

	/**
	 * 通过查询条件查询用户信息
	 * 
	 * @param start
	 *            每页开始显示
	 * @param limit
	 *            每页显示数量
	 * @param userName
	 *            用户姓名
	 * @param userType
	 *            用户类别
	 * @param branchId
	 *            所属机构ID
	 * @return 查询信息列表
	 */
	public Page<User> listUsers(int start, int limit, String userName,
			String userType, String branchId);

	/**
	 * 重置用户密码
	 * 
	 * @param selectId
	 *            选中用户ID
	 * @return 重置用户姓名
	 */
	public String restoreUserPass(String selectId);

	/**
	 * 保存编辑用户信息
	 * 
	 * @param selectId
	 *            编辑用户ID
	 * @param userType
	 *            用户类别
	 * @param sex
	 *            性别
	 * @param age
	 *            年龄
	 * @param email
	 *            邮箱
	 * @param telphone
	 *            电话
	 * @return
	 */
	public boolean saveUserInfo(String selectId, String userType, String sex,
			String age, String email, String telphone);

	/**
	 * 登陆通过手机号和密码判断用户是否存在
	 * 
	 * @param telphone
	 *            手机号
	 * @param password
	 *            密码
	 * @return
	 */
	public User isExist(String telphone, String password);

	/**
	 * 通过用户ID查找，匹配输入旧密码是否与用户密码一致
	 * 
	 * @param id
	 *            用户ID
	 * @param password
	 *            旧密码
	 * @return
	 */
	public boolean confrimUserPasswordById(Long id, String password);

	/**
	 * 修改用户密码
	 * 
	 * @param id
	 *            用户ID
	 * @param initPassword
	 *            新密码
	 * @return
	 */
	public boolean modifyUserPassword(Long id, String initPassword);

	/**
	 * 获取当前登录用户信息
	 * 
	 * @param id
	 *            用户ID
	 * @return 当前登录用户信息
	 */
	public User getCurrentUserInfo(Long id);

	/**
	 * 修改个人信息
	 * 
	 * @param selectId
	 *            编辑用户ID
	 * @param sex
	 *            性别
	 * @param age
	 *            年龄
	 * @param email
	 *            邮箱
	 * @param telphone
	 *            电话
	 * @return
	 */
	public boolean modifyUserInfo(String selectId, String sex, String age,
			String email, String telphone);

	/**
	 * 查询此手机号的用户是否存在
	 * 
	 * @param telephone
	 * @return
	 */
	public User isExistByTelephone(String telephone);

	/**
	 * 根据网点ID查询网点客户经理信息列表
	 * 
	 * @param branchId
	 *            网点ID
	 * @param userType
	 *            用户类别
	 * @return 客户经理信息列表
	 */
	public List<User> getLoanManagerList(Long branchId, String userType);
}
